package com.cookor.poi.modules.sys.utils;

import org.junit.Test;

import java.security.MessageDigest;

/**
 * @Description: TODO
 * @author: scott
 * @date: 2022年07月27日 15:20
 */
public class MD5Util {

    @Test
    public void test()throws Exception {
        String msg = "oM6c81bnXMkBO6HmEZ5nQ1gF8jNA" + "12-02" + "fy@2022";
        String md5 = getMD5(msg).toLowerCase();
        System.out.println(md5);

    }


    // 生成MD5
    public static String getMD5(String message) throws Exception {
        String md5 = "";
        MessageDigest md = MessageDigest.getInstance("MD5"); // 创建一个md5算法对象
        byte[] messageByte = message.getBytes("UTF-8");
        byte[] md5Byte = md.digest(messageByte); // 获得MD5字节数组,16*8=128位
        md5 = bytesToHex(md5Byte); // 转换为16进制字符串
        return md5;
    }

    // 二进制转十六进制
    private static String bytesToHex(byte[] bytes) throws Exception {
        StringBuffer hexStr = new StringBuffer();
        int num;
        for (int i = 0; i < bytes.length; i++) {
            num = bytes[i];
            if (num < 0) {
                num += 256;
            }
            if (num < 16) {
                hexStr.append("0");
            }
            hexStr.append(Integer.toHexString(num));
        }
        return hexStr.toString().toUpperCase();
    }

}
